package com.chain.main;

import com.chain.face.Handler;
import com.chain.impl.DeptManager;
import com.chain.impl.GeneralManager;
import com.chain.impl.ProjectManager;

/**
 * 责任链模式：是一种对象的行为模式。在责任链模式里，很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递，
 * 直到链上的某一个对象决定处理此请求
 * 。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求，这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
 * 
 * @author dell
 * 
 */
// Tomcat中的Filter就是使用了责任链模式，创建一个Filter除了要在web.xml文件中做相应配置外，还需要实现javax.servlet.Filter接口
public class Client {

	public static void main(String[] args) {
		// 先要组装责任链
		Handler h1 = new GeneralManager();
		Handler h2 = new DeptManager();
		Handler h3 = new ProjectManager();
		h3.setSuccessor(h2);
		h2.setSuccessor(h1);

		// 开始测试
		String test1 = h3.handleRequest("张三", 300);
		System.out.println("test1 = " + test1);
		String test2 = h3.handleRequest("李四", 300);
		System.out.println("test2 = " + test2);
		System.out.println("---------------------------------------");

		String test3 = h3.handleRequest("张三", 700);
		System.out.println("test3 = " + test3);
		String test4 = h3.handleRequest("李四", 700);
		System.out.println("test4 = " + test4);
		System.out.println("---------------------------------------");

		String test5 = h3.handleRequest("张三", 1500);
		System.out.println("test5 = " + test5);
		String test6 = h3.handleRequest("李四", 1500);
		System.out.println("test6 = " + test6);
	}

}
